בעיה בקוקיז
בניתי מערכת הרשמה, ויש בעיה קטנה בהתחברות,
אני שמתי שמתי שהמשתמש מתחבר יהיה קוקיז, אבל הקוקיז עושה לי בעיה,
זה הקוד של המערכת כולה:
{
print'
<form method="post" action="?do=loginc">
<table>
<tr>
<td><input type="text" name="userl" /></td>
<td>שם משתמש</td>
</tr>
<tr>
<td><input type="text" name="passl" /></td>
<td>סיסמה</td>
</tr>
<tr>
<td><input type="reset" name="resetl" /></td>
<td><input type="submit" name="subl" /></td>
</tr>
</table>
</form>
';
if(isset($_COOKIE['log'])) {
print'אתה מחובר';
}else{
print'אתה לא מחובר<br>';
print'<a href="?do=logut">התנתק</a>';
}
}else{
if($do == loginc)
{
$usr = $_POST['userl']; $pss = $_POST['passl']; $time = time();
$login = mysql_query("SELECT * FROM `Users` where `Username`='$usr' AND `Password`='$pss'");
$loginr = mysql_num_rows($login);
if(isset($_POST['subl']))
{
if($loginr > 0)
{
$pass = md5(md5($usr));
setcookie("log",'true', time() + 86400*100);
echo 'התחברת בהצלחה';
}
}
}else{
if($do == logut)
{
setcookie("log",'$pass', time() - 86400*100);
print'התנתקת בהצלחה';
}
אך הקוד הזה (של ההתחברות):
והקוד הזה (של ההתנתקות):
עושים לי בעיה כזו באתר:
אז מי שיכול לעזור, שיעזור בבקשה :)
28 תשובות
עוגיות נשלחות בין ה-headerים, ולא כתוכן לדפדפן.
מה שאני רוצה להגיד זה ששמת פלט לפני setcookie וזה אסור.
את כל הפלט שים בסוף.
אתה יכול בבקשה לתת לי דוגמא לזה, בכך שתעשה זאת במערכת שלי?
כל מה שב-print לא צריך להיות שם. הכל צריך להיות בסוף הדף.
מזאת אומרת בסוף הדף?, איפה אני יכול לשים אותו בשביל שמתי שהמשתמש יתחבר זה יופיע?
if($do == 'login') {
$output .= '
<form method="post" action="?do=loginc">
<table>
<tr>
<td><input type="text" name="userl" /></td>
<td>שם משתמש</td>
</tr>
<tr>
<td><input type="text" name="passl" /></td>
<td>סיסמה</td>
</tr>
<tr>
<td><input type="reset" name="resetl" /></td>
<td><input type="submit" name="subl" /></td>
</tr>
</table>
</form>
';
if (isset($_COOKIE['log'])) {
$output .= 'אתה מחובר';
}
else {
$output .= 'אתה לא מחובר<br>';
$output .= '<a href="?do=logut">התנתק</a>';
}
}
else {
if($do == 'loginc') {
$usr = $_POST['userl']; $pss = $_POST['passl']; $time = time();
$login = mysql_query("SELECT * FROM `Users` where `Username`='$usr' AND `Password`='$pss'");
$loginr = mysql_num_rows($login);
if(isset($_POST['subl'])) {
if($loginr > 0) {
$pass = md5(md5($usr));
setcookie("log",'true', time() + 86400*100);
$output .= 'התחברת בהצלחה';
}
}
}
else{
if($do == 'logut')
{
setcookie("log",'$pass', time() - 86400*100);
$output .= 'התנתקת בהצלחה';
}
}
}
echo $output;
ד"א, תלמד על mvc, הקוד הזה ממש רע וגם יש לך פריצת אבטחה.
אחיי? עדיין יוצא לי:
אפשר עוד תמיכה?!
כי יש לך לפני זה עוד הדפסות.
תראה מה שעשיתי ותיישם את זה בכל שאר המקומות.
אבל אין לי עוד קוקיז בדף, ד"א, יש לך סקייפ אני יראה לך הכל במפורט?
אז מה, יש לך עוד פלט לפני setcookie.
ואין לי סקייפ, מצטער.
תיישם את מה שעשיתי בקוד שלך בשאר הקוד.
נעשה שכל פלט יהיה ב HEADER? זה לא קצת מוגזם?, כאילו, בכל זאת אחרי זה יהיה עוד פלטים, כי אם אני ישים את זה למעלה, אני יצטרך לשים לזה Echoים עם פלט, נגיד שמתי את זה:
אחרי זה אני יצטרך לשים את זה בתוך התוכן שלמטה בתור:
אז זה גם נקרא פלט לא?
אז מה עושים?
את המשתנה output שיצרתי תשים הכי למעלה. וכל פעם שאתה רוצה להדפיס משהו אז פשוט תשרשר אותו למשתנה, וב************סוף************ הקוד תדפיס את ה-output.
ותעבור ל-mvc.
מזה "************" ???
מדגיש את המילה "סוף".
שים לב, זה כל המערכת שבניתי מתחילת הדף עד הסוף:
http://phpguide.co.il/phplive?code=433
שמתי בכולם את מה שאמרת, וכלום לא עובד לי!!
כלום!!!
תבדוק את כל זה, ותגיד לי בבקשה מה הבעיה.
מה שמחוץ לתגי php הוא גם פלט. **כל** הפלט -> לסוף.
אוקיי, עכשיו זה לא מציג לי את הבעיה, אבל בכל זאת יש בעיה אחרת: זה הקוד שלי:
http://phpguide.co.il/phplive?code=434
אבל הבעיה פה, היא בדף ה ?do=login איפה שאמור להיות כתוב "אתה מחובר" או "אתה מנותק", זה משאיר לי אותו כל הזמן על מחובר, אפילו אם אני נכנס ל ?do=logut .
למה?
הקוד שלך הוא לא נכון.
אתה עושה דבר כזה:
}
register אמור להיות מחרוזת, תעטוף אותו בגירשיים.
כשאתה כותב את זה ככה php מחפשת קבוע (constant) בשם register.
ואם אני יעשה את זה, מה שאמרתי יפעל?
הקוד שלך ממש קוד מסורבל, תחפש טעויות כמו שהזכרתי ותתקן אותן. זה קודם לכל.
סידרתי את הקוד כמו שאמרת:
http://phpguide.co.il/phplive?code=435
אבל עדיין כתוב לי "אתה מחובר" כל הזמן!!
מה עושים?
אתה חייב ללמוד איך לכתוב קוד. הכל אצלך ממש לא מובן.
הנה הקוד ה"חדש": http://pastebin.com/DPwZGq96
לא תיקנתי כלום כי קשה להבין משהו מהקוד, אבל אולי ככה יהיה לך יותר קל למצוא את הבעיה ולא תזדקק לעזרה.
אתה יכול בבקשה להכניס את הקוד לאתר אחר? או להביא לי אותו בתור קובץ להורדה? כי פשוט אתרים שמכניסים בהם קודים לא עובדים לי :S
אבל זה לא עובד לי!, תעלה קובץ PHP ל F2H, ותביא לי אותו.
תודה!
הקישור ששלחתי עכשיו הוא הקובץ להורדה, מה לא עובד בדיוק?
האתר הזה בכלל לא עובד לי..
תוכל להעלות לאתר אחר?
http://www.upf.co.il/file/410101355.html